import torch

# create test data
# 4张图片，3通道，28*28像素
a = torch.randn(4, 3, 28, 28)
print(a.shape)  # 打印形状
print(a.size())  # 打印形状

# 1、直接索引
print(a[0].shape)  # 查看第0张图片
print(a[0, 0].shape)  # 查看第0张图片第0个通道
print(a[0, 0, 2].shape)  # 查看第0张图片第0个通道第2行
print(a[0, 0, 2, 4].shape)  # 查看第0张图片第0个通道第2行第4列

# 2、切片
print(a[:2].shape)  # 查看0-1张图片
print(a[:2, :2].shape)  # 查看0-1张图片的0-1通道
print(a[:2, :, -5:25])  # 查看0-1张图片的所有通道的倒数5到正数24行
print(a[:, :, :, ::2].shape)  # 有间隔的索引
# 用...表示多个省略的:
print(a[..., :2].shape)  # 获取所有图片的0-2列
print(a[..., :2, :].shape)  # 获取所有图片的0-2行
print(a[2, ...].shape)  # 获取第二张图片
